package com.itheima.d1_create_thread;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

/**
 * 掌握线程的创建方式一：继承Callable类

 */
public class ThreadTest3 {
    //main方法是一个主线程复制运行
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        //3.创建一个Callable的对象
        Callable<String> call = new MyCallable(100);
        //4.把Callable封装成一个FutureTask对象
        //1.任务对象实现了Runnable对象
        //2.实行线程完成之后，用未来对象调用get方法获取线程执行完成后的结果
        FutureTask<String> f1 = new FutureTask<>(call);

        Callable<String> call2 = new MyCallable(200);
        FutureTask<String> f2 = new FutureTask<>(call2);
        new Thread(f2).start();
        //5.把任务对象交给Thread
        new Thread(f1).start();
        //6.获取线程执行完成之后的方法
        //把线程执行完毕之后才能执行下面的方法
        String s = f1.get();
        System.out.println(s);
        String s2 = f2.get();
        System.out.println(s2);
    }
}
